From b8c6de5a8b467663340377cf3cf4a3a223a9d920 Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Thu, 9 Jun 2005 20:48:45 +0000 Subject: [PATCH] bitkeeper revision 1.1668.1.8 (42a8ab2d2hMDGWkEyEFVRMJaIQWGdQ) Add floating-point save/restore support on domain switch Signed-off by: Dan Magenheimer --- xen/arch/ia64/domain.c | 1 + xen/arch/ia64/xensetup.c | 3 +++ xen/include/asm-ia64/xensystem.h | 2 ++ 3 files changed, 6 insertions(+) diff --git a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c index f44b886461..8de53757de 100644 --- a/xen/arch/ia64/domain.c +++ b/xen/arch/ia64/domain.c @@ -406,6 +406,7 @@ printk("new_thread, about to call dom_fw_setup\n"); printk("new_thread, done with dom_fw_setup\n"); // don't forget to set this! v->vcpu_info->arch.banknum = 1; + memset(v->arch._thread.fph,0,sizeof(struct ia64_fpreg)*96); } #endif // CONFIG_VTI diff --git a/xen/arch/ia64/xensetup.c b/xen/arch/ia64/xensetup.c index 413cf66b89..ae179b458a 100644 --- a/xen/arch/ia64/xensetup.c +++ b/xen/arch/ia64/xensetup.c @@ -218,6 +218,9 @@ void start_kernel(void) init_frametable(); + ia64_fph_enable(); + __ia64_init_fpu(); + alloc_dom0(); #ifdef DOMU_BUILD_STAGING alloc_domU_staging(); diff --git a/xen/include/asm-ia64/xensystem.h b/xen/include/asm-ia64/xensystem.h index 7c63a738b0..c7c9771fee 100644 --- a/xen/include/asm-ia64/xensystem.h +++ b/xen/include/asm-ia64/xensystem.h @@ -50,6 +50,8 @@ extern struct task_struct *vmx_ia64_switch_to (void *next_task); } while (0) #else // CONFIG_VTI #define __switch_to(prev,next,last) do { \ + ia64_save_fpu(prev->arch._thread.fph); \ + ia64_load_fpu(next->arch._thread.fph); \ if (IA64_HAS_EXTRA_STATE(prev)) \ ia64_save_extra(prev); \ if (IA64_HAS_EXTRA_STATE(next)) \ -- 2.30.2